/*
 *  Copyright (C) 2020 original author or authors.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 *  in compliance with the License. You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software distributed under the License
 *  is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 *  or implied. See the License for the specific language governing permissions and limitations under
 *  the License.
 */

package vip.justlive.easyproxy.client;

import java.io.IOException;
import java.util.concurrent.TimeUnit;
import vip.justlive.easyproxy.client.handler.ClientHandler;
import vip.justlive.easyproxy.core.context.Config;
import vip.justlive.oxygen.core.Bootstrap;
import vip.justlive.oxygen.core.config.ConfigFactory;
import vip.justlive.oxygen.core.net.aio.core.Client;
import vip.justlive.oxygen.core.net.aio.core.GroupContext;
import vip.justlive.oxygen.core.util.ThreadUtils;

/**
 * 客户端
 *
 * @author wubo
 */
public class ProxyClient {

  public static void main(String[] args) throws IOException {
    Bootstrap.start();
    Config config = ConfigFactory.load(Config.class);

    ClientHandler handler = new ClientHandler(config);
    GroupContext context = new GroupContext(handler);
    ConfigFactory.load(context, Config.AIO_CONFIG);
    context.setAioListener(handler);

    Client client = new Client(context);
    client.connect(config.getServer().getHost(), config.getServer().getPort());

    ThreadUtils.globalTimer().scheduleWithFixedDelay(handler::stats, 1, 1, TimeUnit.MINUTES);
  }
}
